package com.thb.pay.core.chainofresponsibility;

import com.thb.pay.core.chainofresponsibility.bean.MemberBean;
import com.thb.pay.core.utils.R;
import lombok.extern.slf4j.Slf4j;

/**
 * @类名称 MemberRankHandler
 * @类描述 <pre>会员等级抽象类</pre>
 * @作者 xufuzhou xufuzhou@tansun.com.cn
 * @创建时间 2019/9/27
 * @版本 v1.01
 */
@Slf4j
public abstract class MemberRankHandler {

    /**
     * 下一个等级处理
     */
    private MemberRankHandler nextMemberRankHandler;

    /**
     * 会员信息
     */
    private MemberBean member;

    private MemberRankHandler(MemberBean member) {
        this.member = member;
    }

    public final void handler(MemberBean member) {
        if (nextMemberRankHandler != null) {
            nextMemberRankHandler.processMessage(member, member.getProcessObj());
            return;
        }

    }

    /**
     * @param nextMemberRankHandler
     * @return
     * @方法名称
     * @功能描述 设置下一个等级处理器
     * @作者: lucky
     * @创建时间: 11:47 2019/9/27
     * @版本 v1.01
     * </pre>
     **/
    public void setNextMemberRankHandler(MemberRankHandler nextMemberRankHandler) {
        this.nextMemberRankHandler = nextMemberRankHandler;
    }

    /**
     * 处理 等级内容相关业务信息
     *
     * @param member     会员等级信息
     * @param processObj 会员等级 需要处理的内容
     * @return
     */
    public abstract R processMessage(MemberBean member, Object processObj);
}
